Micron Document
<!DOCTYPE html>
<html class="client-nojs vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-0 vector-toc-not-available vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-0 skin-theme-clientpref-day vector-sticky-header-enabled" lang="de" dir="ltr"><head>
<meta charset="UTF-8">
<title>Perforce Jam</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="icon" type="image/png" href="./_res_/favicon.png">
<link rel="canonical" href="https://de.wikipedia.org/wiki/Perforce_Jam"> <link href="./_mw_/ext.wikimediamessages.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.icons.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.search.codex.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.styles.css" rel="stylesheet" type="text/css">
<meta name="ResourceLoaderDynamicStyles" content="">
<link href="./_mw_/ext.gadget.citeRef.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.defaultPlainlinks.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiCommonHide.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiCommonLayout.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiCommonStyle.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiDarkmode.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiResponsive.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.specialSearch.css" rel="stylesheet" type="text/css">
<link rel="stylesheet" type="text/css" href="./_mw_/site.styles.css">
<link rel="stylesheet" type="text/css" href="./_mw_/noscript.css">
<link rel="stylesheet" type="text/css" href="./_res_/footer.css">
<link rel="stylesheet" type="text/css" href="./_res_/vector-2022.css">
</head>
<body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-Perforce_Jam rootpage-Perforce_Jam skin-vector-2022 action-view">
<div class="mw-page-container">
<div class="mw-page-container-inner">
<div class="mw-content-container">
<main id="content" class="mw-body">
<header class="mw-body-header vector-page-titlebar">
<h1 id="firstHeading" class="firstHeading mw-first-heading"><span class="mw-page-title-main">Perforce Jam</span></h1>
</header>
<a id="top"></a>
<div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
<div id="contentSub">
<div id="mw-content-subtitle"></div>
</div>
<div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="de" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="de" dir="ltr"><p><b>Perforce Jam</b> ist ein quelloffenes <a href="Build-System" class="mw-redirect" title="Build-System">Build-System</a>, geschrieben von Christopher Seiwald bei Perforce Software. Es kann als Ersatz für <a href="Make" title="Make">make</a> verwendet werden. Jam läuft auf <a href="Unix" title="Unix">Unix</a> (inklusive vielen Derivaten), <a href="OpenVMS" title="OpenVMS">OpenVMS</a>, <a href="Linux" title="Linux">Linux</a>, <a href="Windows_NT" class="mw-redirect" title="Windows NT">Windows NT</a>, und <a href="MacOS" title="MacOS">MacOS</a>. Mithilfe von <a href="MinGW" title="MinGW">MinGW</a> oder <a href="Cygwin" title="Cygwin">Cygwin</a> läuft Jam auch auf Windows 9.x. Man kann es, genau wie make, auch zusammen mit <a href="Autoconf" class="mw-redirect" title="Autoconf">Autoconf</a> verwenden. Jedoch ist das dank der Portabilität von Jam nicht immer nötig.
</p><p>Ein Build-System ist für die automatische Übersetzung von Computerprogrammen zuständig. Es ruft unter verschiedenen Systemen die jeweiligen <a href="Compiler" title="Compiler">Compiler</a> und <a href="Linker_(Computerprogramm)" title="Linker (Computerprogramm)">Linker</a> auf. Außerdem werden notwendige Dateien kopiert oder generiert. Oft wird auch eine automatische Installation/Deinstallation oder die Generierung eines Downloadpakets für Endnutzer angeboten.
</p>

<div class="mw-heading mw-heading2"><h2 id="Vorteile_gegenüber_make"><span id="Vorteile_gegen.C3.BCber_make"></span>Vorteile gegenüber make</h2></div>
<ul><li><i>Jamfiles</i>, also die Regeln zum Übersetzen des Programms, sind normalerweise portabel, das heißt, sie können auf allen unterstützten Systemen ohne Anpassungen ausgeführt werden.</li>
<li>Abhängigkeiten müssen nicht explizit angegeben werden, Jam findet sie automatisch in den C++- oder anderen unterstützten Quelldateien.</li>
<li>Die Sprache ist sehr einfach und übersichtlich. Jamfiles sind erheblich kürzer als Makefiles.</li>
<li>Die sogenannte <i>Jambase</i>, die die mitgelieferten Regeln enthält, bringt sehr viele komfortable Regeln mit, was in make alles selbst geschrieben, bzw. mit <a href="Automake" class="mw-redirect" title="Automake">Automake</a> generiert werden müsste.</li>
<li>Die Sprache ist nach Belieben erweiterbar, auch Regeln aus der Jambase können überschrieben werden.</li></ul>
<div class="mw-heading mw-heading2"><h2 id="Sprache">Sprache</h2></div>
<p>Die Sprache von Jam hat einige Besonderheiten. Alle Sprachbestandteile müssen mit einem <a href="Leerzeichen" title="Leerzeichen">Leerzeichen</a> abgetrennt werden, ansonsten würden sie als Teil einer <a href="Zeichenkette" title="Zeichenkette">Zeichenkette</a>, dem einzigen <a href="Datentyp" title="Datentyp">Datentyp</a> in Jam, interpretiert werden. Über sogenannte Actions kann innerhalb des Jamfiles <a href="Unix-Shell#Die_Bourne-Again-Shell" title="Unix-Shell">bash</a>- bzw. <a href="Stapelverarbeitung#Steuern_und_Starten_von_Batch-Jobs" title="Stapelverarbeitung">Batch</a>-Code ausgeführt werden.
</p><p>Ein einfaches Jamfile:
</p>
<pre>Main hello&nbsp;: hello.cc&nbsp;;
Library mytools&nbsp;: mytools.cc&nbsp;;
LinkLibraries hello&nbsp;: mytools&nbsp;;
</pre>
<div class="mw-heading mw-heading2"><h2 id="Gebrauch">Gebrauch</h2></div>
<p>Im Wurzelverzeichnis des Softwareprojekts wird das Kommando <i>jam</i> aufgerufen. Dabei wird dann zunächst die Datei <i>Jamfile</i> inklusive allen darin eingebunden Dateien ausgelesen und danach die notwendigen Schritte zum Übersetzen des Programms ausgeführt. Als <a href="Kommandozeilenparameter" title="Kommandozeilenparameter">Kommandozeilenparameter</a> kann ein bestimmtes Jamfile mit <i>-f<b>Dateiname</b></i> oder ein gewünschtes <i>Target</i> angegeben werden. Mit diesen Targets kann z.&nbsp;B. nur ein Bestimmter Teil des Programms übersetzt werden. Zur Installation des Programms wird gewöhnlich <i>jam install</i> aufgerufen.
</p>
<div class="mw-heading mw-heading2"><h2 id="Varianten">Varianten</h2></div>
<p><b>FT Jam</b> ist vollkommen rückwärtskompatibel zu Perforce Jam. Es hat zusätzliche eingebaute Regeln und Unterstützung für mehr Compiler. Außerdem wird Windows 9.x unterstützt und es wurden viele Schönheitsfehler korrigiert.
</p><p><b>KJam</b> ist eine komplette Neuschreibung von Jam. Es soll stabiler, einfacher und leistungsfähiger sein. KJam unterstützt neben anderen Verbesserungen netzwerkübergreifendes Kompilieren.
</p><p><b>Boost Jam</b>, auch BJam oder Boost.Jam, basiert auf FT Jam und ist auch rückwärtskompatibel zu Perforce Jam. Es wurde im Rahmen der <a href="Boost_(C%2B%2B-Bibliothek)" title="Boost (C++-Bibliothek)">Boost C++ Libraries</a> entwickelt.
</p><p><b>Autojam</b> bietet eine erweiterte Jambase mit mehr Regeln.
</p><p><b>Haiku Jam</b> wird standardmäßig von <a href="Haiku_(Betriebssystem)" title="Haiku (Betriebssystem)">Haiku (Betriebssystem)</a> benutzt.
</p><p><b>Platinum C++ Jam</b> auch Pt-Jam. Es wurde im Rahmen der Platinum C++ Framework entwickelt.
</p><p><b>JamPlus</b> fügt der Perforce-Originalversion von Jam neue Features hinzu und wurde um Patches aus der Jamming mailing list und dem Perforce Public Depot erweitert.
</p>
<div class="mw-heading mw-heading2"><h2 id="Weblinks">Weblinks</h2></div>
<ul><li><a rel="nofollow" class="external text" href="http://www.perforce.com">Perforce Software</a> (englisch)</li>
<li><a rel="nofollow" class="external text" href="https://swarm.workshop.perforce.com/projects/perforce_software-jam">Perforce Jam</a> (englisch)</li>
<li><a rel="nofollow" class="external text" href="http://freetype.sourceforge.net/jam/">FT Jam</a> (englisch)</li>
<li><a rel="nofollow" class="external text" href="http://www.oroboro.com/kjam">KJam</a> (englisch)</li>
<li><a rel="nofollow" class="external text" href="http://www.boost.org/doc/tools/jam/index.html">Boost Jam</a> (englisch)</li>
<li><style data-mw-deduplicate="TemplateStyles:r261891140">
/* start https://de.wikipedia.org/ */


.mw-parser-output .webarchiv-memento a{color:inherit}


/* end https://de.wikipedia.org/ */
</style><a rel="nofollow" class="external text" href="https://web.archive.org/web/20110719183355/http://autojam.berlios.de">AutoJam</a> (<span class="webarchiv-memento"><a href="Webarchivierung#Begrifflichkeiten" title="Webarchivierung">Memento</a></span> vom 19. Juli 2011 im <i><a href="Internet_Archive" title="Internet Archive">Internet Archive</a></i>) (englisch)</li>
<li><a rel="nofollow" class="external text" href="http://www.pt-framework.net/docs.html">Platinum C++ Jam</a> (englisch)</li>
<li><a rel="nofollow" class="external text" href="http://jamplus.org/">JamPlus</a> (englisch)</li></ul></div><!--htdig_noindex--><div><div class="zim-footer">
Dieser Artikel wurde von <a class="external text" title="Zuletzt bearbeitet am 2025-01-09" href="https://de.wikipedia.org/wiki/?title=Perforce_Jam&amp;oldid=252080336">Wikipedia</a> herausgegeben. Der Text ist unter <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.de">Creative Commons Attribution-Share Alike 4.0</a> verfügbar, sofern nicht anders angegeben. Für die Mediendateien können zusätzliche Bedingungen gelten.
</div>
</div><!--/htdig_noindex--></div>
</div>
</main>
</div>
</div>
</div>
<script src="./_webp_/webpHandler.js"></script>

</body></html>